# encoding: utf-8
'''
Created on 2018年5月31日

@author: mengqiang.song
'''
import urllib.request
import urllib.parse
import re
import os
from app.common.utils import ImgUtil 
os.environ['TF_CPP_MIN_LOG_LEVEL']='2' #屏蔽掉tensorFlow的一些警告

header={
     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
     "referer":"https://image.baidu.com"
    }
fileBasePath = os.path.abspath("../temp")
class BaiduImgCollectService(object):
    def __init__(self):  
        self.__baiduUrl="https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={word}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word={word}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn={pageNum}&rn=30&gsm=1e00000000001e&1490169411926="
        

    def doCollect(self,keyword,count):
        keyword=urllib.parse.quote(keyword,"utf-8")
        #n作为一个flag，用于条件判断
        n=0
        #j作为写入图片的识别标志，默认从第0张开始，每写入一张j就+1
        j=0
        #
        error=0
        
        downloadDir = fileBasePath+"\\baidu_img_data"
        while(n<30*10 and n<count):
            n+=30
            #url链接
            url1=self.__baiduUrl.format(word=keyword,pageNum=str(n))
           
            #获取请求
            rep=urllib.request.Request(url1,headers=header)
            #打开网页
            rep=urllib.request.urlopen(rep)
            #读取网页数据
            try:
                html=rep.read().decode("utf-8")
            except:
                print("something wrong!")
                error=1
                print("-------------now page ="+str(n))
            if(error==1): continue
            #正则匹配，你需要的资源都是在 像这样的里面("thumbURL":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3734503404,179583637&fm=23&gp=0.jpg")
            p=re.compile("thumbURL.*?\.jpg")
            #获取正则匹配结果，返回的是一个list
            s=p.findall(html)
            #如果不路径存在，创建路径，最后的图片保存在此路径下
            if os.path.isdir(downloadDir)!=True:
                os.makedirs(downloadDir, 755 )
            with open("testPic1.txt","w") as f:
                for i in s: #获取图片的url
                    i=i.replace("thumbURL\":\"","") #在IDE上显示，打印的结果
                    print(i)    #保存图片的URL链接，当然你大可不必多此一举
                    f.write(i)
                    f.write("\n")   #进行写入图片
                    urllib.request.urlretrieve(i,downloadDir+"\\pic{num}.jpg".format(num=j))
                    j+=1    
                    if j>=count :
                        return j
        # 遍历百度网页，提取所有图片url
        # 将图片存入本地，使用uuid作为文件名
        # 对文件进行切割压缩转灰度图，得到指定宽高灰度图
        return 0
    def doResize72(self):
        downloadDir = fileBasePath+"\\baidu_img_data"
        resizeBaseDir = fileBasePath+"\\train_data"
        for imgPath in os.listdir(downloadDir):
            tdir = resizeBaseDir+"\\"+imgPath.replace(".jpg","")
            if os.path.isdir(tdir) != True:
                os.makedirs(tdir)
            ImgUtil.imgCut(downloadDir+"\\"+imgPath, tdir, imgPath.replace(".jpg",""), ".jpg", 256, 256, 5);
            for imgPathr in os.listdir(tdir):
                ImgUtil.imgResize(tdir+"\\"+imgPathr, tdir+"\\"+imgPathr, 72, 72, 75)
    def doResize731(self):           
        downloadDir = fileBasePath+"\\baidu_img_data"
        resizeBaseDir = fileBasePath+"\\train_data"
        for imgName in os.listdir(downloadDir):
            oriPath = downloadDir+"\\"+imgName;
            dstPath = resizeBaseDir+"\\"+imgName
            b = ImgUtil.imgCut0(oriPath, dstPath, 256, 256);
            if b==1 :
                ImgUtil.imgResize(dstPath, dstPath, 72, 72, 75)
class code12306CollectService(object):
   
    def builderCollection(self):
        
        return 0
    def getImg(self):
        
        return 0
    
    def lableImg(self):
        #给图片打标，由页面传入
        #将打标参数传给12306，看打标的正确性
        #如打标错误返回false
        #如果打标正确则将打标图片切出来，保存为灰度图，文件名格式为 标签_uuid.suffix
        #返回true
        return True
    
    
bc = BaiduImgCollectService()
# bc.doCollect("美女", 256)
bc.doResize731()

        